home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1994 / 08_94_5.dms / 08_94_5.adf / term-4.0-Source.lha / LibPanel.c < prev    next >
C/C++ Source or Header  |  1994-07-01  |  20KB  |  872 lines

  1. /*
  2. **    LibPanel.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_DEFAULT_LIB=1000,
  13.         GAD_ASCII_UPLOAD_LIB,GAD_ASCII_DOWNLOAD_LIB,
  14.         GAD_TEXT_UPLOAD_LIB,GAD_TEXT_DOWNLOAD_LIB,
  15.         GAD_BINARY_UPLOAD_LIB,GAD_BINARY_DOWNLOAD_LIB,
  16.         GAD_MANGLE,GAD_INTERNAL_ASCII_PREFS,
  17.         GAD_USE,GAD_CANCEL,GAD_DEFAULT,
  18.  
  19.         GAD_DEFAULT_PREFS,
  20.         GAD_ASCII_UPLOAD_PREFS,GAD_ASCII_DOWNLOAD_PREFS,
  21.         GAD_TEXT_UPLOAD_PREFS,GAD_TEXT_DOWNLOAD_PREFS,
  22.         GAD_BINARY_UPLOAD_PREFS,GAD_BINARY_DOWNLOAD_PREFS
  23.     };
  24.  
  25. STATIC STRPTR __saveds
  26. ShowTime(struct Gadget *SomeGadget,WORD Level)
  27. {
  28.     return(LocaleSeconds(Level));
  29. }
  30.  
  31. STATIC VOID __regargs
  32. ASCIITransferPanel(struct Window *Window,struct Configuration *Config)
  33. {
  34.     struct TransferSettings     OldSettings;
  35.  
  36.     struct LayoutHandle    *Handle;
  37.  
  38.     CopyMem(Config -> TransferConfig,&OldSettings,sizeof(struct TransferSettings));
  39.  
  40.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  41.         LH_LocaleHook,    &LocaleHook,
  42.     TAG_DONE))
  43.     {
  44.         struct Window *Window;
  45.  
  46.         LT_New(Handle,
  47.             LA_Type,    VERTICAL_KIND,
  48.         TAG_DONE);
  49.         {
  50.             LT_New(Handle,
  51.                 LA_Type,    VERTICAL_KIND,
  52.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_SEND_TXT,
  53.             TAG_DONE);
  54.             {
  55.                 LT_New(Handle,
  56.                     LA_Type,    VERTICAL_KIND,
  57.                 TAG_DONE);
  58.                 {
  59.                     LT_New(Handle,
  60.                         LA_Type,    CYCLE_KIND,
  61.                         LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  62.                         LA_UBYTE,    &Config -> TransferConfig -> PacingMode,
  63.                         LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  64.                         LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  65.                     TAG_DONE);
  66.  
  67.                     LT_EndGroup(Handle);
  68.                 }
  69.  
  70.                 LT_New(Handle,
  71.                     LA_Type,    VERTICAL_KIND,
  72.                     LA_LabelID,    MSG_V36_0021,
  73.                 TAG_DONE);
  74.                 {
  75.                     LT_New(Handle,
  76.                         LA_Type,        SLIDER_KIND,
  77.                         LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  78.                         GTSL_Min,        0,
  79.                         GTSL_Max,        10 * 100,
  80.                         LA_Chars,        10,
  81.                         LA_WORD,        &Config -> TransferConfig -> CharDelay,
  82.                         GTSL_LevelFormat,    "%s s",
  83.                         GTSL_DispFunc,        ShowTime,
  84.                     TAG_DONE);
  85.     
  86.                     LT_New(Handle,
  87.                         LA_Type,        SLIDER_KIND,
  88.                         LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  89.                         GTSL_Min,        0,
  90.                         GTSL_Max,        10 * 100,
  91.                         LA_Chars,        10,
  92.                         LA_WORD,        &Config -> TransferConfig -> LineDelay,
  93.                         GTSL_LevelFormat,    "%s s",
  94.                         GTSL_DispFunc,        ShowTime,
  95.                     TAG_DONE);
  96.  
  97.                     LT_EndGroup(Handle);
  98.                 }
  99.  
  100.                 LT_New(Handle,
  101.                     LA_Type,    VERTICAL_KIND,
  102.                     LA_LabelID,    MSG_V36_0024,
  103.                 TAG_DONE);
  104.                 {
  105.                     LT_New(Handle,
  106.                         LA_Type,        STRING_KIND,
  107.                         LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  108.                         LA_STRPTR,        Config -> TransferConfig -> LinePrompt,
  109.                         LA_Chars,        10,
  110.                         GTST_MaxChars,        255,
  111.                     TAG_DONE);
  112.  
  113.                     LT_New(Handle,
  114.                         LA_Type,        SLIDER_KIND,
  115.                         LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  116.                         GTSL_Min,        0,
  117.                         GTSL_Max,        10 * 100,
  118.                         LA_WORD,        &Config -> TransferConfig -> SendTimeout,
  119.                         GTSL_LevelFormat,    "%s s",
  120.                         GTSL_DispFunc,        ShowTime,
  121.                     TAG_DONE);
  122.  
  123.                     LT_EndGroup(Handle);
  124.                 }
  125.  
  126.  
  127.                 LT_New(Handle,
  128.                     LA_Type,    VERTICAL_KIND,
  129.                 TAG_DONE);
  130.                 {
  131.                     LT_New(Handle,
  132.                         LA_Type,    CYCLE_KIND,
  133.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_CR_GAD,
  134.                         LA_BYTE,    &Config -> TransferConfig -> SendCR,
  135.                         LACY_FirstLabel,MSG_TERMINALPANEL_DOCR_IGNORE_TXT,
  136.                         LACY_LastLabel,    MSG_TERMINALPANEL_DOCR_AS_CR_LF_TXT,
  137.                     TAG_DONE);
  138.     
  139.                     LT_New(Handle,
  140.                         LA_Type,    CYCLE_KIND,
  141.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_LF_GAD,
  142.                         LA_BYTE,    &Config -> TransferConfig -> SendLF,
  143.                         LACY_FirstLabel,MSG_TERMINALPANEL_DOLF_IGNORE_TXT,
  144.                         LACY_LastLabel,    MSG_TERMINALPANEL_DOLF_AS_LF_CR_TXT,
  145.                     TAG_DONE);
  146.  
  147.                     LT_EndGroup(Handle);
  148.                 }
  149.  
  150.                 LT_EndGroup(Handle);
  151.             }
  152.  
  153.             LT_New(Handle,
  154.                 LA_Type,    VERTICAL_KIND,
  155.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_RECEIVE_TXT,
  156.             TAG_DONE);
  157.             {
  158.                 LT_New(Handle,
  159.                     LA_Type,    CYCLE_KIND,
  160.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_CR_GAD,
  161.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveCR,
  162.                     LACY_FirstLabel,MSG_TERMINALPANEL_DOCR_IGNORE_TXT,
  163.                     LACY_LastLabel,    MSG_TERMINALPANEL_DOCR_AS_CR_LF_TXT,
  164.                 TAG_DONE);
  165.     
  166.                 LT_New(Handle,
  167.                     LA_Type,    CYCLE_KIND,
  168.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_LF_GAD,
  169.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveLF,
  170.                     LACY_FirstLabel,MSG_TERMINALPANEL_DOLF_IGNORE_TXT,
  171.                     LACY_LastLabel,    MSG_TERMINALPANEL_DOLF_AS_LF_CR_TXT,
  172.                 TAG_DONE);
  173.  
  174.                 LT_New(Handle,
  175.                     LA_Type,    CHECKBOX_KIND,
  176.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_IGNORE_DATA_PAST_ARNOLD_TXT,
  177.                     LA_BYTE,    &Config -> TransferConfig -> IgnoreDataPastArnold,
  178.                 TAG_DONE);
  179.  
  180.                 LT_New(Handle,
  181.                     LA_Type,    INTEGER_KIND,
  182.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_TERMINATOR_CHAR_TXT,
  183.                     LA_BYTE,    &Config -> TransferConfig -> TerminatorChar,
  184.                     LAIN_Min,    0,
  185.                     LAIN_Max,    255,
  186.                 TAG_DONE);
  187.  
  188.                 LT_EndGroup(Handle);
  189.             }
  190.  
  191.             LT_New(Handle,
  192.                 LA_Type,    VERTICAL_KIND,
  193.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_GENERAL_TXT,
  194.             TAG_DONE);
  195.             {
  196.                 LT_New(Handle,
  197.                     LA_Type,    CHECKBOX_KIND,
  198.                     LA_LabelID,    MSG_LIBPANEL_QUIET_TRANSFER_GAD,
  199.                     LA_BYTE,    &Config -> TransferConfig -> QuietTransfer,
  200.                 TAG_DONE);
  201.  
  202.                 LT_New(Handle,
  203.                     LA_Type,    CHECKBOX_KIND,
  204.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_STRIP_BIT_7_TXT,
  205.                     LA_BYTE,    &Config -> TransferConfig -> StripBit8,
  206.                 TAG_DONE);
  207.  
  208.                 LT_EndGroup(Handle);
  209.             }
  210.  
  211.             LT_New(Handle,
  212.                 LA_Type,VERTICAL_KIND,
  213.             TAG_DONE);
  214.             {
  215.                 LT_New(Handle,
  216.                     LA_Type,    XBAR_KIND,
  217.                     LAXB_FullSize,    TRUE,
  218.                 TAG_DONE);
  219.  
  220.                 LT_EndGroup(Handle);
  221.             }
  222.  
  223.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  224.                 LAGR_SameSize,    TRUE,
  225.                 LAGR_Spread,    TRUE,
  226.             TAG_DONE);
  227.             {
  228.                 LT_New(Handle,
  229.                     LA_Type,    BUTTON_KIND,
  230.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  231.                     LA_ID,        GAD_USE,
  232.                     LABT_ReturnKey,    TRUE,
  233.                     LABT_ExtraFat,    TRUE,
  234.                 TAG_DONE);
  235.  
  236.                 LT_New(Handle,
  237.                     LA_Type,    BUTTON_KIND,
  238.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  239.                     LA_ID,        GAD_CANCEL,
  240.                     LABT_EscKey,    TRUE,
  241.                     LABT_ExtraFat,    TRUE,
  242.                 TAG_DONE);
  243.  
  244.                 LT_EndGroup(Handle);
  245.             }
  246.  
  247.             LT_EndGroup(Handle);
  248.         }
  249.  
  250.         if(Window = LT_Layout(Handle,LocaleString(MSG_INTERNAL_ASCII_TRANSFER_TRANSFER_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  251.             LAWN_HelpHook,        &GuideHook,
  252.             WA_DepthGadget,        TRUE,
  253.             WA_CloseGadget,        TRUE,
  254.             WA_DragBar,        TRUE,
  255.             WA_RMBTrap,        TRUE,
  256.             WA_Activate,        TRUE,
  257.         TAG_DONE))
  258.         {
  259.             struct IntuiMessage    *Message;
  260.             BOOLEAN             Done = FALSE;
  261.             ULONG             MsgClass,
  262.                          MsgQualifier;
  263.             UWORD             MsgCode;
  264.             struct Gadget        *MsgGadget;
  265.  
  266. /*            GuideContext(CONTEXT_CLIP);*/
  267.  
  268.             PushWindow(Window);
  269.  
  270.             LT_ShowWindow(Handle,TRUE);
  271.  
  272.             do
  273.             {
  274.                 if(Wait(PORTMASK(Window -> UserPort) | SIG_BREAK) & SIG_BREAK)
  275.                 {
  276.                     CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  277.  
  278.                     break;
  279.                 }
  280.  
  281.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(Window -> UserPort))
  282.                 {
  283.                     MsgClass    = Message -> Class;
  284.                     MsgQualifier    = Message -> Qualifier;
  285.                     MsgCode        = Message -> Code;
  286.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  287.  
  288.                     GT_ReplyIMsg(Message);
  289.  
  290.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  291.  
  292.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  293.                     {
  294.                         CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  295.  
  296.                         Done = TRUE;
  297.                     }
  298.  
  299.                     if(MsgClass == IDCMP_GADGETUP)
  300.                     {
  301.                         switch(MsgGadget -> GadgetID)
  302.                         {
  303.                             case GAD_USE:
  304.  
  305.                                 Done = TRUE;
  306.                                 break;
  307.  
  308.                             case GAD_CANCEL:
  309.  
  310.                                 CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  311.  
  312.                                 Done = TRUE;
  313.                                 break;
  314.                         }
  315.                     }
  316.                 }
  317.             }
  318.             while(!Done);
  319.  
  320.             PopWindow();
  321.         }
  322.  
  323.         LT_DeleteHandle(Handle);
  324.     }
  325. }
  326.  
  327. BYTE __regargs
  328. LibPanel(struct Configuration *Config,BYTE *Default)
  329. {
  330.     struct LayoutHandle    *Handle;
  331.     BYTE             OpenIt = TRUE,
  332.                  Cancel = FALSE;
  333.  
  334.     SaveConfig(Config,PrivateConfig);
  335.  
  336.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  337.         LH_LocaleHook,    &LocaleHook,
  338.     TAG_DONE))
  339.     {
  340.         struct Window *Window;
  341.  
  342.         LT_New(Handle,
  343.             LA_Type,    VERTICAL_KIND,
  344.         TAG_DONE);
  345.         {
  346.             LT_New(Handle,
  347.                 LA_Type,    HORIZONTAL_KIND,
  348.             TAG_DONE);
  349.             {
  350.                 LT_New(Handle,
  351.                     LA_Type,    STRING_KIND,
  352.                     LA_LabelID,    MSG_LIBPANEL_DEFAULT_TRANSFER_LIBRARY_GAD,
  353.                     LA_STRPTR,    Config -> TransferConfig -> DefaultLibrary,
  354.                     LA_Chars,    20,
  355.                     LA_ID,        GAD_DEFAULT_LIB,
  356.                     GTST_MaxChars,    MAX_FILENAME_LENGTH,
  357.                     LAST_Picker,    TRUE,
  358.                 TAG_DONE);
  359.  
  360.                 LT_New(Handle,
  361.                     LA_Type,    BUTTON_KIND,
  362.                     LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  363.                     LA_ID,        GAD_DEFAULT_PREFS,
  364.                 TAG_DONE);
  365.  
  366.                 LT_EndGroup(Handle);
  367.             }
  368.  
  369.             LT_New(Handle,
  370.                 LA_Type,    VERTICAL_KIND,
  371.             TAG_DONE);
  372.             {
  373.                 LT_New(Handle,
  374.                     LA_Type,    CHECKBOX_KIND,
  375.                     LA_LabelID,    MSG_MANGLE_UPLOAD_FILENAMES_TXT,
  376.                     LA_BYTE,    &Config -> TransferConfig -> MangleFileNames,
  377.                     LA_ID,        GAD_MANGLE,
  378.                 TAG_DONE);
  379.  
  380.                 LT_New(Handle,
  381.                     LA_Type,    XBAR_KIND,
  382.                 TAG_DONE);
  383.  
  384.                 LT_EndGroup(Handle);
  385.             }
  386.  
  387.             LT_New(Handle,
  388.                 LA_Type,    VERTICAL_KIND,
  389.                 LA_LabelID,    MSG_V36_0089,
  390.             TAG_DONE);
  391.             {
  392.                 LT_New(Handle,
  393.                     LA_Type,    HORIZONTAL_KIND,
  394.                 TAG_DONE);
  395.                 {
  396.                     LT_New(Handle,
  397.                         LA_Type,    STRING_KIND,
  398.                         LA_LabelID,    MSG_LIBPANEL_ASCII_UPLOAD_LIBRARY_GAD,
  399.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIUploadLibrary,
  400.                         LA_Chars,    20,
  401.                         LA_ID,        GAD_ASCII_UPLOAD_LIB,
  402.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  403.                         LAST_Picker,    TRUE,
  404.                     TAG_DONE);
  405.  
  406.                     LT_New(Handle,
  407.                         LA_Type,    BUTTON_KIND,
  408.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  409.                         LA_ID,        GAD_ASCII_UPLOAD_PREFS,
  410.                     TAG_DONE);
  411.  
  412.                     LT_EndGroup(Handle);
  413.                 }
  414.  
  415.                 LT_New(Handle,
  416.                     LA_Type,    VERTICAL_KIND,
  417.                 TAG_DONE);
  418.                 {
  419.                     LT_New(Handle,
  420.                         LA_Type,    HORIZONTAL_KIND,
  421.                     TAG_DONE);
  422.                     {
  423.                         LT_New(Handle,
  424.                             LA_Type,    CHECKBOX_KIND,
  425.                             LA_LabelID,    MSG_LIBPANEL_BUILTIN_ASCII_UPLOAD_GAD,
  426.                             LA_BYTE,    &Config -> TransferConfig -> InternalASCIIUpload,
  427.                         TAG_DONE);
  428.  
  429.                         LT_New(Handle,
  430.                             LA_Type,    BUTTON_KIND,
  431.                             LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  432.                             LA_ID,        GAD_INTERNAL_ASCII_PREFS,
  433.                         TAG_DONE);
  434.     
  435.                         LT_EndGroup(Handle);
  436.                     }
  437.  
  438.                     LT_New(Handle,
  439.                         LA_Type,    VERTICAL_KIND,
  440.                     TAG_DONE);
  441.                     {
  442.                         LT_New(Handle,
  443.                             LA_Type,    XBAR_KIND,
  444.                         TAG_DONE);
  445.  
  446.                         LT_EndGroup(Handle);
  447.                     }
  448.  
  449.                     LT_EndGroup(Handle);
  450.                 }
  451.  
  452.                 LT_New(Handle,
  453.                     LA_Type,    HORIZONTAL_KIND,
  454.                 TAG_DONE);
  455.                 {
  456.                     LT_New(Handle,
  457.                         LA_Type,    STRING_KIND,
  458.                         LA_LabelID,    MSG_LIBPANEL_ASCII_DOWNLOAD_LIBRARY_GAD,
  459.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIDownloadLibrary,
  460.                         LA_ID,        GAD_ASCII_DOWNLOAD_LIB,
  461.                         LA_Chars,    20,
  462.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  463.                         LAST_Picker,    TRUE,
  464.                     TAG_DONE);
  465.  
  466.                     LT_New(Handle,
  467.                         LA_Type,    BUTTON_KIND,
  468.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  469.                         LA_ID,        GAD_ASCII_DOWNLOAD_PREFS,
  470.                         GA_Disabled,    !Config -> TransferConfig -> ASCIIDownloadLibrary[0],
  471.                     TAG_DONE);
  472.  
  473.                     LT_EndGroup(Handle);
  474.                 }
  475.  
  476.                 LT_New(Handle,
  477.                     LA_Type,    HORIZONTAL_KIND,
  478.                 TAG_DONE);
  479.                 {
  480.                     LT_New(Handle,
  481.                         LA_Type,    CHECKBOX_KIND,
  482.                         LA_LabelID,    MSG_LIBPANEL_BUILTIN_ASCII_DOWNLOAD_GAD,
  483.                         LA_BYTE,    &Config -> TransferConfig -> InternalASCIIDownload,
  484.                     TAG_DONE);
  485.  
  486.                     LT_New(Handle,
  487.                         LA_Type,    BUTTON_KIND,
  488.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  489.                         LA_ID,        GAD_INTERNAL_ASCII_PREFS,
  490.                     TAG_DONE);
  491.     
  492.                     LT_EndGroup(Handle);
  493.                 }
  494.  
  495.                 LT_EndGroup(Handle);
  496.             }
  497.  
  498.             LT_New(Handle,
  499.                 LA_Type,    HORIZONTAL_KIND,
  500.                 LA_LabelID,    MSG_V36_0090,
  501.             TAG_DONE);
  502.             {
  503.                 LT_New(Handle,
  504.                     LA_Type,    VERTICAL_KIND,
  505.                 TAG_DONE);
  506.                 {
  507.                     LT_New(Handle,
  508.                         LA_Type,    STRING_KIND,
  509.                         LA_LabelID,    MSG_LIBPANEL_TEXT_UPLOAD_LIBRARY_GAD,
  510.                         LA_STRPTR,    Config -> TransferConfig -> TextUploadLibrary,
  511.                         LA_ID,        GAD_TEXT_UPLOAD_LIB,
  512.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  513.                         LAST_Picker,    TRUE,
  514.                         LA_Chars,    20,
  515.                     TAG_DONE);
  516.  
  517.                     LT_New(Handle,
  518.                         LA_Type,    STRING_KIND,
  519.                         LA_LabelID,    MSG_LIBPANEL_TEXT_DOWNLOAD_LIBRARY_GAD,
  520.                         LA_STRPTR,    Config -> TransferConfig -> TextDownloadLibrary,
  521.                         LA_ID,        GAD_TEXT_DOWNLOAD_LIB,
  522.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  523.                         LAST_Picker,    TRUE,
  524.                     TAG_DONE);
  525.  
  526.                     LT_EndGroup(Handle);
  527.                 }
  528.  
  529.                 LT_New(Handle,
  530.                     LA_Type,    VERTICAL_KIND,
  531.                 TAG_DONE);
  532.                 {
  533.                     LT_New(Handle,
  534.                         LA_Type,    BUTTON_KIND,
  535.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  536.                         LA_ID,        GAD_TEXT_UPLOAD_PREFS,
  537.                         GA_Disabled,    !Config -> TransferConfig -> TextUploadLibrary[0],
  538.                     TAG_DONE);
  539.  
  540.                     LT_New(Handle,
  541.                         LA_Type,    BUTTON_KIND,
  542.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  543.                         LA_ID,        GAD_TEXT_DOWNLOAD_PREFS,
  544.                         GA_Disabled,    !Config -> TransferConfig -> TextDownloadLibrary[0],
  545.                     TAG_DONE);
  546.  
  547.                     LT_EndGroup(Handle);
  548.                 }
  549.  
  550.                 LT_EndGroup(Handle);
  551.             }
  552.  
  553.             LT_New(Handle,
  554.                 LA_Type,    HORIZONTAL_KIND,
  555.                 LA_LabelID,    MSG_V36_0091,
  556.             TAG_DONE);
  557.             {
  558.                 LT_New(Handle,
  559.                     LA_Type,    VERTICAL_KIND,
  560.                 TAG_DONE);
  561.                 {
  562.                     LT_New(Handle,
  563.                         LA_Type,    STRING_KIND,
  564.                         LA_LabelID,    MSG_LIBPANEL_BINARY_UPLOAD_LIBRARY_GAD,
  565.                         LA_STRPTR,    Config -> TransferConfig -> BinaryUploadLibrary,
  566.                         LA_ID,        GAD_BINARY_UPLOAD_LIB,
  567.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  568.                         LAST_Picker,    TRUE,
  569.                         LA_Chars,    20,
  570.                     TAG_DONE);
  571.  
  572.                     LT_New(Handle,
  573.                         LA_Type,    STRING_KIND,
  574.                         LA_LabelID,    MSG_LIBPANEL_BINARY_DOWNLOAD_LIBRARY_GAD,
  575.                         LA_STRPTR,    Config -> TransferConfig -> BinaryDownloadLibrary,
  576.                         LA_ID,        GAD_BINARY_DOWNLOAD_LIB,
  577.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  578.                         LAST_Picker,    TRUE,
  579.                     TAG_DONE);
  580.  
  581.                     LT_EndGroup(Handle);
  582.                 }
  583.  
  584.                 LT_New(Handle,
  585.                     LA_Type,    VERTICAL_KIND,
  586.                 TAG_DONE);
  587.                 {
  588.                     LT_New(Handle,
  589.                         LA_Type,    BUTTON_KIND,
  590.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  591.                         LA_ID,        GAD_BINARY_UPLOAD_PREFS,
  592.                         GA_Disabled,    !Config -> TransferConfig -> BinaryUploadLibrary[0],
  593.                     TAG_DONE);
  594.  
  595.                     LT_New(Handle,
  596.                         LA_Type,    BUTTON_KIND,
  597.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  598.                         LA_ID,        GAD_BINARY_DOWNLOAD_PREFS,
  599.                         GA_Disabled,    !Config -> TransferConfig -> BinaryUploadLibrary[0],
  600.                     TAG_DONE);
  601.  
  602.                     LT_EndGroup(Handle);
  603.                 }
  604.  
  605.                 LT_EndGroup(Handle);
  606.             }
  607.  
  608.             LT_New(Handle,
  609.                 LA_Type,VERTICAL_KIND,
  610.             TAG_DONE);
  611.             {
  612.                 LT_New(Handle,
  613.                     LA_Type,    XBAR_KIND,
  614.                     LAXB_FullSize,    TRUE,
  615.                 TAG_DONE);
  616.  
  617.                 LT_EndGroup(Handle);
  618.             }
  619.  
  620.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  621.                 LAGR_SameSize,    TRUE,
  622.                 LAGR_Spread,    TRUE,
  623.             TAG_DONE);
  624.             {
  625.                 LT_New(Handle,
  626.                     LA_Type,    BUTTON_KIND,
  627.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  628.                     LA_ID,        GAD_USE,
  629.                     LABT_ReturnKey,    TRUE,
  630.                     LABT_ExtraFat,    TRUE,
  631.                 TAG_DONE);
  632.  
  633.                 if(Default)
  634.                 {
  635.                     LT_New(Handle,
  636.                         LA_Type,    BUTTON_KIND,
  637.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  638.                         LA_ID,        GAD_DEFAULT,
  639.                         LABT_ExtraFat,    TRUE,
  640.                     TAG_DONE);
  641.                 }
  642.  
  643.                 LT_New(Handle,
  644.                     LA_Type,    BUTTON_KIND,
  645.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  646.                     LA_ID,        GAD_CANCEL,
  647.                     LABT_EscKey,    TRUE,
  648.                     LABT_ExtraFat,    TRUE,
  649.                 TAG_DONE);
  650.  
  651.                 LT_EndGroup(Handle);
  652.             }
  653.  
  654.             LT_EndGroup(Handle);
  655.         }
  656.  
  657.         if(Window = LT_Layout(Handle,LocaleString(MSG_LIBPANEL_LIBRARY_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  658.             LAWN_HelpHook,        &GuideHook,
  659.             WA_DepthGadget,        TRUE,
  660.             WA_CloseGadget,        TRUE,
  661.             WA_DragBar,        TRUE,
  662.             WA_RMBTrap,        TRUE,
  663.             WA_Activate,        TRUE,
  664.         TAG_DONE))
  665.         {
  666.             struct IntuiMessage    *Message;
  667.             BOOLEAN             Done = FALSE;
  668.             ULONG             MsgClass,
  669.                          MsgQualifier;
  670.             UWORD             MsgCode;
  671.             struct Gadget        *MsgGadget;
  672.  
  673.             GuideContext(CONTEXT_LIBS);
  674.  
  675.             PushWindow(Window);
  676.  
  677.             LT_ShowWindow(Handle,TRUE);
  678.  
  679.             do
  680.             {
  681.                 if(Wait(PORTMASK(Window -> UserPort) | SIG_BREAK) & SIG_BREAK)
  682.                 {
  683.                     SaveConfig(PrivateConfig,Config);
  684.  
  685.                     break;
  686.                 }
  687.  
  688.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(Window -> UserPort))
  689.                 {
  690.                     MsgClass    = Message -> Class;
  691.                     MsgQualifier    = Message -> Qualifier;
  692.                     MsgCode        = Message -> Code;
  693.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  694.  
  695.                     GT_ReplyIMsg(Message);
  696.  
  697.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  698.  
  699.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  700.                     {
  701.                         SaveConfig(PrivateConfig,Config);
  702.  
  703.                         Done = TRUE;
  704.                     }
  705.  
  706.                     if(MsgClass == IDCMP_GADGETUP)
  707.                     {
  708.                         STRPTR Buffer;
  709.  
  710.                         switch(MsgGadget -> GadgetID)
  711.                         {
  712.                             case GAD_USE:
  713.  
  714.                                 Done = TRUE;
  715.                                 break;
  716.  
  717.                             case GAD_CANCEL:
  718.  
  719.                                 SaveConfig(PrivateConfig,Config);
  720.  
  721.                                 Cancel = Done = TRUE;
  722.  
  723.                                 OpenIt = FALSE;
  724.  
  725.                                 break;
  726.  
  727.                             case GAD_DEFAULT:
  728.  
  729.                                 *Default = TRUE;
  730.  
  731.                                 Done = TRUE;
  732.  
  733.                                 OpenIt = FALSE;
  734.  
  735.                                 break;
  736.  
  737.                             case GAD_INTERNAL_ASCII_PREFS:
  738.  
  739.                                 LT_LockWindow(Window);
  740.         
  741.                                 ASCIITransferPanel(Window,Config);
  742.         
  743.                                 LT_UnlockWindow(Window);
  744.         
  745.                                 LT_ShowWindow(Handle,TRUE);
  746.                                 break;
  747.  
  748.                             case GAD_DEFAULT_LIB:
  749.                             case GAD_ASCII_UPLOAD_LIB:
  750.                             case GAD_ASCII_DOWNLOAD_LIB:
  751.                             case GAD_TEXT_UPLOAD_LIB:
  752.                             case GAD_TEXT_DOWNLOAD_LIB:
  753.                             case GAD_BINARY_UPLOAD_LIB:
  754.                             case GAD_BINARY_DOWNLOAD_LIB:
  755.  
  756.                                 Buffer = (STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE);
  757.  
  758.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_LIB + GAD_DEFAULT_PREFS,GA_Disabled,!Buffer[0],TAG_DONE);
  759.  
  760.                                 break;
  761.  
  762.                             case GAD_DEFAULT_PREFS:
  763.                             case GAD_ASCII_UPLOAD_PREFS:
  764.                             case GAD_ASCII_DOWNLOAD_PREFS:
  765.                             case GAD_TEXT_UPLOAD_PREFS:
  766.                             case GAD_TEXT_DOWNLOAD_PREFS:
  767.                             case GAD_BINARY_UPLOAD_PREFS:
  768.                             case GAD_BINARY_DOWNLOAD_PREFS:
  769.  
  770.                                 LT_LockWindow(Window);
  771.  
  772.                                 Buffer = (STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_PREFS + GAD_DEFAULT_LIB,TAG_DONE);
  773.  
  774.                                 if(Buffer[0])
  775.                                 {
  776.                                     if(ChangeProtocol(Buffer))
  777.                                     {
  778.                                         if(XProtocolBase)
  779.                                         {
  780.                                             XprIO -> xpr_filename = NULL;
  781.     
  782.                                             XPRCommandSelected = FALSE;
  783.     
  784.                                             ClearSerial();
  785.     
  786.                                             NewOptions = FALSE;
  787.  
  788.                                             TransferBits = XProtocolSetup(XprIO);
  789.     
  790.                                             RestartSerial(FALSE);
  791.     
  792.                                             DeleteTransferPanel(TRUE);
  793.     
  794.                                                 /* Successful? */
  795.     
  796.                                             if(!XPRCommandSelected)
  797.                                             {
  798.                                                 if(!(TransferBits & XPRS_SUCCESS))
  799.                                                 {
  800.                                                     MyEasyRequest(Window,LocaleString(MSG_GLOBAL_FAILED_TO_SET_UP_PROTOCOL_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LastXprLibrary);
  801.     
  802.                                                     CloseLibrary(XProtocolBase);
  803.     
  804.                                                     XProtocolBase = NULL;
  805.     
  806.                                                     LastXprLibrary[0] = 0;
  807.     
  808.                                                     TransferBits = 0;
  809.     
  810.                                                     SetTransferMenu(FALSE);
  811.                                                 }
  812.                                                 else
  813.                                                     SaveProtocolOpts();
  814.                                             }
  815.                                         }
  816.                                     }
  817.     
  818.                                     ResetProtocol();
  819.                                 }
  820.  
  821.                                 LT_UnlockWindow(Window);
  822.  
  823.                                 break;
  824.                         }
  825.                     }
  826.  
  827.                     if(MsgClass == IDCMP_IDCMPUPDATE && (MsgGadget -> GadgetID >= GAD_DEFAULT_LIB && MsgGadget -> GadgetID <= GAD_BINARY_DOWNLOAD_LIB))
  828.                     {
  829.                         LT_LockWindow(Window);
  830.     
  831.                         strcpy(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  832.     
  833.                         if(PickFile(Window,"Libs:","xpr#?.library",LocaleString(MSG_LIBPANEL_SELECT_DEFAULT_TRANSFER_LIBRARY_TXT + MsgGadget -> GadgetID - GAD_DEFAULT_LIB),SharedBuffer,NT_LIBRARY))
  834.                         {
  835.                             if(Stricmp(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE)))
  836.                             {
  837.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  838.     
  839.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_LIB + GAD_DEFAULT_PREFS,GA_Disabled,!SharedBuffer[0],TAG_DONE);
  840.                             }
  841.                         }
  842.     
  843.                         LT_UnlockWindow(Window);
  844.     
  845.                         LT_ShowWindow(Handle,TRUE);
  846.                     }
  847.                 }
  848.             }
  849.             while(!Done);
  850.  
  851.             PopWindow();
  852.         }
  853.  
  854.         LT_DeleteHandle(Handle);
  855.     }
  856.  
  857.     if(Default)
  858.         return((BYTE)(!Cancel));
  859.     else
  860.     {
  861.         if(XProtocolBase)
  862.             return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  863.         else
  864.         {
  865.             if(Config -> TransferConfig -> DefaultLibrary[0])
  866.                 return(OpenIt);
  867.             else
  868.                 return(FALSE);
  869.         }
  870.     }
  871. }
  872.